package kr.co.shoppingmall.main;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MainController {

    @RequestMapping("/index.htm")
    public String loginform(HttpServletRequest request, HttpSession session) {
	request.getSession();
	if (session != null) {
	    String id = (String) session.getAttribute("id");
	    request.setAttribute("id", id);
	}
	return "index";
    }
    
    @RequestMapping("/agreement.htm")
    public String agreement() {
	return "agreement";
    }

    @RequestMapping("/popup1.htm")
    public String popup() {
	return "popup1";
    }

    @RequestMapping("/mailForm.htm")
    public String mailForm() {
	return "mailForm";
    }
    
    @RequestMapping("/mailFail.htm")
    public String mailFail() {
	return "mailFail";
    }
    
    @RequestMapping("/mailTran.htm")
    public String mailTran() {
	return "mailTran";
    }

    @RequestMapping("/mailSend.htm")
    public String mailSend(HttpServletRequest request, HttpServletResponse response) throws IOException {

	try {
	    request.setCharacterEncoding("UTF-8");
	} catch (UnsupportedEncodingException e1) {
	    // TODO Auto-generated catch block
	    e1.printStackTrace();
	}
	String sender = request.getParameter("sender");
	String receiver = request.getParameter("receiver");
	String subject = request.getParameter("subject");
	String content = request.getParameter("content");

	// SMTP 서버의 주소를 저장
	String server = "localhost";

	try {
	    // 서버정보를 Properties 객체에 저장
	    Properties properties = new Properties();
	    properties.put("mail.smtp.host", server);

	    // 세션객체를 생성
	    Session s = Session.getDefaultInstance(properties, null);

	    // 메일을 보내기 위한 정보를 입력하기 위해 Message객체를 생성
	    Message message = new MimeMessage(s);

	    // 보내는 메일 주소와 받는 메일 주소를 설정
	    Address sender_address = new InternetAddress(sender);
	    Address receiver_address = new InternetAddress(receiver);

	    // 보내는 메일의 한글이 깨지지 않도록 설정
	    message.setHeader("content-type", "text/html;charset=euc-kr");

	    // 보내는 메일주소, 받는 메일주소, 제목, 내용등을 저장
	    message.setFrom(sender_address);
	    message.setRecipient(Message.RecipientType.TO, receiver_address);
	    message.setSubject(subject);
	    message.setContent(content, "text/html;charset=euc-kr");
	    message.setSentDate(new Date());

	    // 메일을 전송하는 부분
	    Transport transport = s.getTransport("smtp");
	    transport.connect(server, null, null);// 계정과 암호를 입력하는 부분에는 익명계정이므로
						  // null을 정장
	    transport.sendMessage(message, message.getAllRecipients());
	    transport.close();

	} catch (Exception e) {
	    e.printStackTrace();
	    return "redirect:/mailFail.htm";
	}
	return "redirect:/mailTran.htm";
    }
}
